Наша
книга называется «САПР на базе AutoCAD — как это делается». Все слова из
названия этой книги являются ключевыми для понимания, о чем идет речь.
САПР — это система автоматизированного проектирования. Именно о системе, а
не об отдельных программах и приемах работы пойдет речь. Причем о системе,
базирующейся на «системе AutoCAD» фирмы Autodesk (США). Система AutoCAD, одна из самых
популярных в мире и наверняка самая популярная в России, является мощным графическим
ядром, на котором базируются многие прикладные пакеты, как от самой Autodesk
(Mechanical Desktop,
Architectural Desktop,
Land Development Desktop и т. п.), так и
огромное количество программ и систем от партнёров Autodesk и независимых
производителей.. В дальнейшем в целях ясности «голый» AutoCAD будем называть базовой
системой.
Сама
система AutoCAD в «голом» виде, то есть в объеме базовой поставки, позволяет
выполнять чертежные (и не только чертежные) работы любого назначения с использованием
только штатных средств. С помощью стандартных примитивов AutoCAD (отрезков, полилиний, кругов, текстов и т. п.) можно «нарисовать»
почти все, что угодно. Но конечному пользователю
(конструктору-машиностроителю, строителю, сантехнику) нужно рисовать не просто
наборы примитивов, а конкретные объекты (здания, оборудование, трубопроводы,
изделия, планы городов и многое другое). Делать это надо быстро и
качественно, в соответствии со стандартами, действующими в стране и в отрасли.
Все, что требуется всем конечным пользователям во всех странах,
фирма Autodesk включить в состав AutoCAD не могла, да этого и не нужно
делать, так как получился бы некий программный монстр, в котором, при наличии
огромного количества средств, конкретному человеку всегда чего-то бы не
хватало, а все остальное использовалось бы только на несколько процентов.
Фирма Autodesk пошла, на наш взгляд, по правильному пути — она снабдила базовую систему превосходными средствами
разработки прикладных систем.
Используя средства разработки AutoCAD, можно создавать программы и для вычерчивания зданий, и для
проектирования судов, и для «болтов и гаек».
А «как
это делается» (крылатое выражение Карела Чапека), мы и попытаемся осветить в
нашей книге.
В СССР и
России издано немало книг, посвященных и работе с системой AutoCAD на уровне обычного пользователя, и
ее адаптации, и программированию на LISP (основном, или, по крайней мере, самом старом средстве для
разработчиков). В этих книгах, как правило, изучается язык программирования,
приводятся примеры разработки нескольких программ, публикуются справочные
сведения по функциям, командам AutoCAD и его системным переменным. Обычно этого бывает достаточно, чтобы
читатель смог начать, и весьма успешно, разработку собственных программ.
Однако, после того как первые трудности с освоением языка и
элементарных приемов работы остаются
позади, возникают вопросы другого плана. Сначала смутно, а затем все яснее
разработчик начинает понимать, что созданные им десятки (или даже сотни)
программ надо приводить в какую-то систему. У него возникает желание
распространять свои разработки и получать за это деньги. На этом этапе приходит
понимание разницы между программой
(даже очень хорошей) и программным продуктом.
И чаще всего выясняется, что с самого начала многое надо было делать не так,
многое требуется переписать заново. Обнаруживается, что программы «почему-то»
работают только в присутствии автора, на его компьютере, приходится расставаться
с мечтами о заработке на продажах.
В этой
книге, основанной на собственном опыте, многочисленных ошибках и находках, мы
попытаемся раскрыть технику и технологию разработки комплексной САПР,
предназначенной для разработки различных чертежей — от идеи и концепции до
выпуска продукта в свет. Причем сделаем это на конкретном примере гипотетической
«Нашей САПР». Гипотетической, но собранной в виде реального дистрибутива
(программы установки системы), который можно будет найти на сайтах авторов.
Вопросы,
рассматривающиеся в книге, не высосаны из пальца. Большинство из них возникало
(и более или менее успешно решалось) в ходе разработки реальных прикладных
систем. Кроме того, в течение ряда лет мы участвуем в работе нескольких форумов
в Интернете, в той или иной мере связанных с разработкой приложений для AutoCAD. Анализ тысяч вопросов,
задававшихся на этих форумах, помог включить в книгу ряд актуальных и
интересных тем.
Эта
книга не является справочником, учебником или методическим пособием для
изучения AutoCAD или языков программирования. В ней вы не встретите ни перечней
команд и системных переменных AutoCAD, ни исчерпывающих перечней функций, процедур и методов,
используемых в рассматриваемых языках. Все это можно найти в других книгах, в
том числе в книгах Николая Полещука.[1] Все
это имеется и в справочной системе самого AutoCAD (увы, локализируемой в последнюю
очередь). Сведения справочного характера приводятся только для официально не
документированных функций, методов и переменных. В нашей книге мы постарались
раскрыть те темы, которые или вообще не рассматривались ранее, или очень смутно
освещены в технической документации.
Эта
книга позиционируется, как издание, предназначенное для разработчиков прикладных систем на базе AutoCAD.
Обратите внимание — не для программистов
(хотя, разумеется, может быть прочитана и ими).
Следует
отметить, что разработкой прикладных программ на базе AutoCAD занимаются, как правило, не
«настоящие программисты», а обычные инженеры (по крайней мере, в России).
Вызвано это, по нашим наблюдениям, тем, что проще инженеру освоить не очень
сложные средства разработки для AutoCAD (и получать при этом великолепные результаты), чем заставить
профессионального программиста заниматься этой «грязной» работой.
Действительно, задачи, решаемые «под AutoCAD» обычно не требуют ни сложных математических методов, ни
хитроумной обработки больших объемов данных, ни умелого обращения с ресурсами
операционной системы. Зато решающее значение имеют, казалось бы
мелкие нюансы интерфейса пользователя с программой, знание предметной области,
глубокое знание самого AutoCAD и, обязательно, любовь к
пользователю. Все это приходит только в результате опыта практической
работы по проектированию (как «бумажного», так и «компьютерного»).
Зачастую
российский инженер, сделав несколько программ «для себя», заболевает этой
неизлечимой болезнью — САПР, и продолжает заниматься разработкой на все
более профессиональном уровне. Чаще он продолжает одновременно заниматься
проектированием или конструированием, иногда проходит путь до профессионального
разработчика. Одной из задач этой
книги является помощь в сокращении этой трудной дороги.
Наверное
только в России такое количество людей занимается не своим делом. Архитекторы
пишут музыку и учат с телеэкранов секретам приготовления пищи, авиационные
инженеры сочиняют и читают со сцены юмористические рассказы, а инженеры-строители
разрабатывают информационные системы, не имеющие к строительству никакого
отношения (именно этим и занят сейчас один из авторов). А профессиональные
программисты, не попавшие в команды, работающие над конкретными проектами,
мучаются в поисках «что бы такого сделать плохого» (и делают), в то время как
какой-нибудь конструктор мучительно пытается понять, как из AutoCAD добраться до сервера Interbase. Возможно, наша книга и наставит «на путь истинный» кого-то из
программистов, и подскажет новые решения для конструкторов.
Мы
постарались написать эту книгу так, чтобы ее конечная цель была достигнута с
минимальными моральными и материальными потерями для читателей. Книга переполнена
исходными текстами, читать которые лучше не за тарелкой с борщом, а за
компьютером. Впрочем, не торопитесь «набивать» все встречающиеся исходники. Очень может быть, что вы их найдете на
прилагаемом диске, на сайте издательства или на сайтах авторов.
В книге
рассматривается пример создания реальной САПР, которую читатель сможет
использовать в своей работе. Но сделано это не в виде пошаговых инструкций
(хотя такие и встречаются для нетривиальных случаев).
Разработать САПР «шаг за шагом, и только вперед» нельзя. Чаще придется делать
«три шаги налево, три шаги направо, шаг вперед и два назад». Соответственно
нельзя и написать книгу с последовательным изложением таких «шагов».
Книга
состоит из нескольких частей:
q В части 1 рассматривается общая концепция создаваемой нами САПР. Мы
продумаем принципы работы над проектом, разберем постановочные вопросы, определимся,
какую же систему мы будем разрабатывать, какие задачи и как она будет решать,
чем она будет отличаться от аналогов.
q В части 2 мы рассмотрим, как и что можно и нужно делать без
программирования (библиотеки блоков, штриховок, типов линий), то есть на уровне
адаптации AutoCAD. Толково сформированные библиотеки
в сочетании с простыми программами для их использования позволяют
автоматизировать весьма значительную часть рутинных операций по отрисовке различных изображений.
q Часть
3 посвящена
разработке инструментальных средств для прикладного программирования.
Мы разберем различные инструменты разработчика в AutoCAD
(AutoLISP, Visual LISP, ObjectARX, VBA, Delphi), выработаем рациональные приемы
программирования и разработаем все требуемые библиотечные функции, облегчающие
разработку прикладных программ.
q В части 4 рассматриваются программы, с которыми и будет работать
конечный пользователь. При этом мы вначале сформируем небольшой «сундучок
программиста» с набором инструментов для своих корыстных целей — облегчения собственной работы,
затем напишем десяток простеньких
(в 2–3 строчки) программ общего назначения. Эти простые программы
позволят сразу добавить в меню AutoCAD несколько сотен команд
для создания нескольких тысяч изображений. А пока пользователи разбираются со
свалившимися на них возможностями, мы напишем еще кучу программ специального
назначения — для строителей и сантехников, топографов и генпланистов,
электриков и газовиков. Мы дополним нашу системами элементами документооборота — улучшим работу с папками и
документами, сделаем простой, но пригодный для реальной работы электронный
архив с кальками, типовыми решениями и различными документами.
q Последняя, 5 часть рассказывает о том, как выпустить систему в свет, превратив
кучу программ в программный продукт. Создание справочной системы и документации,
подготовка инсталляций и (почему бы и нет?) технологии распространения — все здесь.
В этой
книге рассматриваются многие темы, для которых просто не может быть однозначно
верного и единственного решения (разве что перевод градусов в радианы и
обратно). Проектирование вообще, а проектирование системы проектирования особенно —
процесс творческий. Готовых рецептов здесь быть не может. Мы предлагаем только
направления для размышлений и некоторые варианты решений. Очень может быть, что
читатели найдут (непременно найдут) лучшие варианты — как на уровне
концепции, так и в реализации. Что же, авторы будут этому только рады.
Из-за
неоднозначности решения рассматриваемых вопросов единого мнения может не быть и
у авторов книги. В таких случаях мы будем выделять соображения каждого автора в
виде специальных врезок «особое мнение», предоставив читателям право на
окончательный вердикт.
Хотя в
книге встречаются некоторые «секретные материалы», не стоит думать, что в ней
будут раскрыты абсолютно все наши и чужие секреты.
q Во-первых, все их мы не знаем.
q Во-вторых, надо что-то оставить и
себе.
q В-третьих, и это
самое главное: мы не скрываем, что очень многие сведения получаем из Интернета,
а там самые любопытные материалы (например, по недокументированным возможностям
AutoCAD) часто
сопровождаются различными угрозами, в которых упоминаются некие
«пещеры», «ритуалы», «злые духи», «блондинки» (причем подчеркивается, что именно
самки, а не самцы), даются тонкие намеки на «визиты в четверг между полуднем и двумя часами» и прочие
прелести. Не желая подвергать
себя и читателей риску ненужных «визитов» и «ритуалов», мы постараемся
воздержаться от публикации кое-чего. Пока ограничимся.
[1] Полещук Н.Н. Visual LISP и секреты
адаптации AutoCAD. — СПб:
БХВ-Петербург, 2001., Полещук Н.Н. AutoCAD 2002. —
СПб: БХВ-Петербург, 2003.